home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-04-10 | 62.5 KB | 2,681 lines |
- *///////*///////*///////*///////*///////*///////*///////*///////
- *
- * SYS_FPIC.HAS v1.5 BY 鳳 幽玄 1995
- *
- **///////*///////*///////*///////*///////*///////*///////*///////
- *
- * v1.1
- * ・要らない処理をいくつか無くした。
- * ・エラーコードが不適切だった部分を直した。
- * ・ソースを多少は見やすくした。
- * ・コメントの嘘の数を軽減した。
- * ・微妙に高速化。
- *
- * v1.2
- * ・緑の稲妻が走るようになり、65536色モードに完全対応。
- * ・微妙に低速化。
- *
- * v1.3
- * ・v1.1程度まで速度を盛りかえした。
- * ・サイズを小さくした。
- *
- * v1.4
- * ・v1.3で最後まで塗れなくなる場合があるエンバグをしていたのを直した。
- * ・さらに5%くらい高速化。
- *
- * v1.5
- * ・多少高速化
- * ・_Fpic_keepで保存してないレジスタがあった。
- *
- * v1.5+0.01 (by Mitsuky)
- * ・_Fpic_keep のエラーコードを拡張(エラーコード -4 を新設)。
- * ・コメントスキップのバグを修正。
- *
- *///////*///////*///////*///////*///////*///////*///////*///////
- * 注意:
- *
- * ・HAS V3.0 以上でアセンブルしてください。
- *
- * ・_Fpic_disp:展開先がグラフィックRAMなどの場合は、
- * スーパーバイザ・モードにしてからコールしてください。
- * また、画面モードも自前で設定してください。
- *
- * ・_Fpic_disp は、スタックワーク1Kbyte強 使用します。
- *
- *///////*///////*///////*///////*///////*///////*///////*///////
-
- include iocscall.mac
- include doscall.mac
- include sys_fpic.mac
-
- .xdef _Fpic_load
- .xdef _Fpic_keep
- .xdef _Fpic_disp
- .xdef _Fpic_free
- .xdef _Fpic_set_buf
-
- .text
-
- *///////*///////*///////*///////*///////*///////*///////
- * 一括処理する
- *///////*///////*///////*///////*///////*///////*///////
- * int Fpic_load(FileNamePtr,x,y)
- * ret:d0.l = 0 普通に終了
- * -1 読めなかった
- * -2 未対応データ
- * -3 メモリ不足
- *///////*///////*///////*///////*///////*///////*///////
- _Fpic_load: movem.l d1-d2/a0,-(sp)
-
- movea.l 4*4(sp),a0 *a0.l = File name
- move.l 4*5(sp),d1 *d1.l = X
- move.l 4*6(sp),d2 *d2.l = Y
-
- pea (a0) *┐メモリに読み込む
- bsr _Fpic_keep *│
- addq.w #4,sp *│
- tst.l d0 *│
- bmi 9f *│
- movea.l d0,a0 *┘
-
- move.l d2,-(sp) *┐読み込んだのを表示
- move.l d1,-(sp) *│
- pea (a0) *│
- bsr _Fpic_disp *│
- lea 12(sp),sp *┘
-
- pea (a0) *┐メモリ解放
- bsr _Fpic_free *│
- addq.w #4,sp *┘
-
- moveq.l #0,d0 * 無事おわり
-
- 9: movem.l (sp)+,d1-d2/a0
- rts
-
- *///////*///////*///////*///////*///////*///////*///////
- * メモリを確保してデータを読み込む
- *///////*///////*///////*///////*///////*///////*///////
- * int Fpic_keep(FileNamePtr)
- * ret:d0.l = BufPtr
- * -1 読めなかった
- * -2 未対応データ(.PIC 形式ではない)
- * -3 メモリ不足
- * -4 未対応データ(32768/65536 色 .PIC でない)
- *///////*///////*///////*///////*///////*///////*///////
-
- pmd_tbl: dc.b $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
- dc.b $ff,$ff,$ff,$ff,$ff,$ff,$02,$03
-
- _Fpic_keep: movem.l d1-d7/a0-a6,-(sp)
-
- move.l 4*15(sp),a0 * a0.l = ファイル名へのポインタ
-
- clr.w -(sp) *┐ファイルオープン
- pea (a0) *│
- DOS _OPEN *│
- addq.l #6,sp *│
- move.l d0,d1 *│
- bmi 9f *┘
-
- move.w d1,-(sp) *┐ちゃんと'PIC'データですか?
- DOS _FGETC *│
- cmpi.b #'P',d0 *│
- bne 8f *│
- DOS _FGETC *│
- cmpi.b #'I',d0 *│
- bne 8f *│
- DOS _FGETC *│
- cmpi.b #'C',d0 *│
- bne 8f *┘
-
- moveq.l #0,d6 *d6.l = X<<16 + Y
- move.l #$00_00_08_00,d7 *d7.l = flag1_flag2_SCR_PICT
- bsr comment_chk *
-
- @@: DOS _FGETC *┐0飛ばし
- tst.b d0 *│
- bne @b *┘
-
- DOS _FGETC *┐$0000?
- tst.b d0 *│
- bne 8f *│
- DOS _FGETC *│
- tst.b d0 *│
- bne 8f *┘
-
- DOS _FGETC *┐使用色bit数
- move.b d0,d3 *│
- lsl.w #8,d3 *│
- DOS _FGETC *│
- move.b d0,d3 *┘
- subq.w #1,d3 *┐使用色bit数/$0001~$0010
- cmpi.w #16,d3 *│ を
- bcc 6f *│PIC・TYPEに変換
- move.b pmd_tbl(pc,d3.w),d3 *│
- bmi 6f *│ 02:32768色
- or.w d3,d7 *┘ 03:65536色
-
- moveq.l #0,d5 *┐サイズ
- moveq.l #4-1,d3 *│
- 1: lsl.l #8,d5 *│
- DOS _FGETC *│
- move.b d0,d5 *│
- dbra d3,1b *┘d5.l = sizeX<<16 + sizeY
-
- move.l d0,d3 *┐
- swap d3 *│横size check
- cmpi.w #512,d3 *│
- bhi 8f *┘
- cmpi.w #512,d5 *┐縦size check
- bhi 8f *┘
-
- move.w #1,-(sp) *┐現在のポインタ位置
- clr.l -(sp) *│
- move.w d1,-(sp) *│
- DOS _SEEK *│
- add.w #8,sp *│
- move.l d0,d2 *┘
-
- move.w #2,-(sp) *┐全サイズを調べる
- clr.l -(sp) *│
- move.w d1,-(sp) *│
- DOS _SEEK *│
- add.w #8,sp *│
- move.l d0,d3 *┘
- sub.l d2,d3 *d3.l = 圧縮データ部のサイズ
-
- clr.w -(sp) *┐ポインタを頭に戻す
- move.l d2,-(sp) *│
- move.w d1,-(sp) *│
- DOS _SEEK *│
- add.w #8,sp *┘
-
- move.l #fpw_size,d2 *┐ヘッダサイズ
- addq.l #4,d2 *┘ヘッダサイズ+念のための4バイト
-
- move.l d3,-(sp) *┐メモリ確保
- add.l d2,(sp) *│ヘッダ分多めに取る
- DOS _MALLOC *│
- addq.w #4,sp *│
- move.l d0,a0 *│a0.l = データのアドレス
- tst.l d0 *│
- bmi 7f *┘
-
- move.l d3,-(sp) *┐圧縮データ部読み込み
- pea fpw_size(a0) *│
- move.w d1,-(sp) *│
- DOS _READ *│
- lea 10(sp),sp *┘
-
- * add.l d3,d2 *┐念のために取った4バイトをクリア
- * clr.l -4(a0,d2.l) *┘
-
- move.l d7,fpw_FLAG1(a0) *
- move.l d6,fpw_X(a0) *
- move.l d5,fpw_H(a0) *
- clr.l fpw_rsv(a0) *
-
- DOS _CLOSE *┐ファイルクローズ
- addq.w #2,sp *┘
-
- move.l a0,d0 *普通に終了
-
- @@: movem.l (sp)+,d1-d7/a0-a6
- rts
-
- 9: moveq.l #-1,d0 *┐-1 = 読み込みエラー
- bra @b *│
- *│
- 8: DOS _CLOSE *│
- addq.w #2,sp *│
- moveq.l #-2,d0 *│-2 = 対応してないデータ。
- bra @b *│(.PIC ではない)
- *│
- 7: DOS _CLOSE *│
- addq.w #2,sp *│
- moveq.l #-3,d0 *│-3 = メモリ不足
- bra @b *│
- *│
- 6: DOS _CLOSE *│
- addq.w #2,sp *│
- moveq.l #-4,d0 *│-4 = 対応してないデータ。
- bra @b *┘(32768/65536 色 .PIC でない)
-
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- * MFGED 拡張フォーマット対応のコメント飛ばし
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- comment_chk: move.w d1,-(sp) *File Hundle
-
- move.l #'/MM/',d2 *┐
- moveq.l #4-1,d3 *│
- 1: rol.l #8,d2 *│
- DOS _FGETC *│/MM/ check
- cmpi.b #$1a,d0 *│
- beq 9f *│
- cmp.b d2,d0 *│
- bne 8f *│
- dbra d3,1b *┘
-
- chk_sw: DOS _FGETC *┐
- cmpi.b #'M',d0 *│頭check
- beq MM_M *│
- cmpi.b #'X',d0 *│
- beq MM_X *│
- cmpi.b #':',d0 *│
- beq 8f *┘
-
- skip_sl: DOS _FGETC *┐スイッチスキップ&NEXT
- cmpi.b #'/',d0 *│
- * bne 8b *│by Mitsuky
- bne skip_sl *│
- bra chk_sw *┘
-
- 8: DOS _FGETC *┐通常のコメントすきっぷ
- cmpi.b #$1a,d0 *│
- bne 8b *┘
-
- 9: addq.w #2,sp
- rts
-
- MM_M: DOS _FGETC
- cmpi.b #'K',d0
- beq MM_MK
- cmpi.b #'Y',d0
- beq MM_MY
- cmpi.b #'S',d0
- beq MM_MS
- cmpi.b #'H',d0
- bne skip_sl
- cmpi.b #'Y',d0
- beq MM_MY
-
- MM_MHY: bset.l #24+fpf_MHY,d7
- bra skip_sl
-
- MM_MK: bset.l #24+fpf_MK,d7
- bra skip_sl
-
- MM_MY: bset.l #24+fpf_MY,d7
- bra skip_sl
-
- MM_MS: bset.l #24+fpf_SCR,d7
- DOS _FGETC
- andi.w #$00ff,d0
- cmpi.b #'A',d0
- bcs 1f
- subi.b #'A'-'0',d0
- 1: subi.b #'0',d0
- lsl.w #8,d0
- or.w d0,d7
- bra skip_sl
-
- MM_X: DOS _FGETC
- cmpi.b #'Y',d0
- beq MM_XY
- cmpi.b #'S',d0
- beq MM_XS
- cmpi.b #'F',d0
- beq skip_sl
-
- MM_XF: DOS _FGETC
- cmpi.b #'L',d0
- bne skip_sl
- bset.l #24+fpf_RS,d7
- bra skip_sl
-
- MM_XS: DOS _FGETC
- cmpi.b #'S',d0
- bne skip_sl
- bset.l #24+fpf_SQ,d7
- bra skip_sl
-
- MM_XY: bset.l #24+fpf_XY,d7
- moveq.l #0,d3
- moveq.l #0,d6
-
- moveq.l #4-1,d2
- 1: mulu #10,d6
- DOS _FGETC
- andi.w #$00ff,d0
- subi.b #'0',d0
- add.w d0,d6
- dbra d2,1b
- swap d6
-
- moveq.l #4-1,d2
- 1: mulu #10,d3
- DOS _FGETC
- andi.w #$00ff,d0
- subi.b #'0',d0
- add.w d0,d3
- dbra d2,1b
- move.w d3,d6
- bra skip_sl
-
- *///////*///////*///////*///////*///////*///////*///////
- * データを破棄する
- *///////*///////*///////*///////*///////*///////*///////
- * int Fpic_free(BufPtr)
- * ret:d0.l = 0 正常終了
- * -1 エラー
- *///////*///////*///////*///////*///////*///////*///////
- *_Fpic_free: move.l 4*1(sp),-(sp) *┐
- * pea (a4) *│解放するだけ
- * DOS _MFREE *│
- * addq.w #8,sp *│
-
- _Fpic_free: move.l 4*1(sp),-(sp) *┐by Mitsuky
- DOS _MFREE *│解放するだけ
- addq.w #4,sp *│
- tst.l d0 *│
- bmi 8f *┘
- 9: rts
- 8: moveq.l #-1,d0 *┐まあ、念のためのエラー
- bra 9b *┘
-
- *///////*///////*///////*///////*///////*///////*///////
- * 展開先アドレスの指定
- *///////*///////*///////*///////*///////*///////*///////
- * void Fpic_free(BufPtr)
- *///////*///////*///////*///////*///////*///////*///////
- _Fpic_set_buf: move.l a0,-(sp) *┐設定するだけ
- lea buf_address(pc),a0 *│
- move.l 8(sp),(a0) *│
- movea.l (sp)+,a0 *┘
- rts
-
- *///////*///////*///////*///////*///////*///////*///////
- * 表示する
- *///////*///////*///////*///////*///////*///////*///////
- * int Fpic_disp(BufPtr,x,y)
- * ret:d0.l = 0 正常終了
- * -1 エラー(今のところありえない)
- *///////*///////*///////*///////*///////*///////*///////
- .offset 0
- PR_BUF: ds.b 1024 *1024 キャッシュバッファ
- PIC_TYP: ds.w 1 *2 PICの色数モード#
- PSIZE_X: ds.w 1 *2 横サイズ
- PSIZE_Y: ds.w 1 *2 縦サイズ
- DOWNOFS: ds.w 1 *2 1段下へ下がる時のアドレス増加分
- VRAMADR: ds.l 1 *4 左上アドレス
- WORK_SZ: ds.l 1 * <a6>
- ds.l 1 * <return adr.>
- DATA_BUF: ds.l 1 * メモリ上のPICデータのポインタ
- ds.w 1 *
- LOC_X: ds.w 1 * 表示座標X
- ds.w 1 *
- LOC_Y: ds.w 1 * 表示座標Y
- .text
-
- buf_address: dc.l $c00000
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- _Fpic_disp: link a6,#-WORK_SZ
- movem.l d1-d7/a0-a6,-(sp)
- lea -WORK_SZ(a6),a6 *(変なことをやってるようだけど許して)
-
- movea.l DATA_BUF(a6),a4 *DATA ADDRESS
-
- clr.w PIC_TYP(a6) *┐PIC・TYPE
- move.b fpw_PICT(a4),PIC_TYP+1(a6) *┘
- move.w fpw_H(a4),PSIZE_X(a6) *SIZE_X
- move.w fpw_V(a4),PSIZE_Y(a6) *SIZE_Y
- lea fpw_size(a4),a4 *
-
- move.w LOC_X(a6),d0 *┐左上アドレスを求める
- add.w d0,d0 *│
- move.w LOC_Y(a6),d1 *│
- mulu #1024,d1 *│
- add.w d0,d1 *│
- add.l buf_address(pc),d1 *│
- move.l d1,VRAMADR(a6) *┘
-
- move.w #512,d0 *┐下段左への増加分を求める
- sub.w PSIZE_X(a6),d0 *│
- add.w d0,d0 *│
- move.w d0,DOWNOFS(a6) *┘
-
- bsr screen_init *
- bsr cache_init *
- bsr PicX *
-
- moveq.l #0,d0 *
- movem.l (sp)+,d1-d7/a0-a6
- unlk a6
- rts
-
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- * 展開バッファをクリア
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- screen_init: movem.l d0-d7/a0-a4,-(sp)
-
- move.l VRAMADR(a6),a1 *┐
- move.w PSIZE_Y(a6),d0 *│
- subq.w #1,d0 *│
- mulu #1024,d0 *│
- move.w PSIZE_X(a6),d1 *│
- add.w d1,a1 *│
- add.w d1,d0 *│
- add.l d0,a1 *┘a1.l = 描き始めアドレス
-
- move.w PSIZE_X(a6),d0 *┐
- subq.w #1,d0 *│*左端の分を引く
- move.w d0,d1 *│
- andi.w #15,d1 *│
- neg.w d1 *│
- add.w #15,d1 *│
- add.w d1,d1 *│
- lea jp_1(pc,d1.w),a2 *│a2.l = ジャンプ先
- lsr.w #4,d0 *│
- neg.w d0 *│
- add.w #32,d0 *│
- add.w d0,d0 *│
- add.w d0,d0 *│
- lea jp_16(pc,d0.w),a3 *┘a3.l = ジャンプ先
-
- move.w DOWNOFS(a6),d0 * 書き込みデータ左端
- neg.w d0 *
- moveq.l #$0000_0000,d1 *┐書き込みデータ
- move.l d1,d2 *│
- move.l d1,d3 *│
- move.l d1,d4 *│
- move.l d1,d5 *│
- move.l d1,d6 *│
- move.l d1,a0 *│
- move.l d1,a4 *┘
-
- move.w PSIZE_Y(a6),d7 *┐縦繰り返し数
- subq.w #1,d7 *┘
-
- @@: jmp (a2) *┐塗りつぶし
- jp_1: .rept 15 *│
- move.w d1,-(a1) *│
- .endm *│
- jmp (a3) *│
- jp_16: .rept 32 *│
- movem.l d1-d6/a0/a4,-(a1) *│
- .endm *│
- move.w d0,-(a1) *│
- adda.w d0,a1 *│
- dbra d7,@b *┘
-
- movem.l (sp)+,d0-d7/a0-a4
- rts
-
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- * キャッシュ用ワーク初期化
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- cache_init: movem.l d0-d3/a0,-(sp)
-
- lea PR_BUF(a6),a0
- moveq.l #8,d1
- move.w #1016,d2
- move.w #1023,d3
- moveq.l #128-1,d0
-
- 1: clr.w (a0)+ *
-
- move.w d1,(a0)+ *next
- addq.w #8,d1 *
- and.w d3,d1 *
-
- move.w d2,(a0)+ *before
- addq.w #8,d2 *
- and.w d3,d2 *
-
- addq.w #2,a0 *dummy
-
- dbra d0,1b
-
- movem.l (sp)+,d0-d3/a0
- rts
-
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- * PIC展開
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- B_TEST .macro *┐マクロ:1ビットテスト
- .local BT_00 *│
- dbra d7,BT_00 *│
- moveq.l #15,d7 *│
- swap d6 *一応必要な場合がある
- move.w (a4)+,d6 *│
- BT_00: btst.l d7,d6 *│
- .endm *┘
-
- B_READ .macro bitn,reg *┐マクロ:複数ビット読み込み
- .local BR_00 *│
- sub.w bitn,d7 *│
- bcc.s BR_00 *│
- add.w a1,d7 *│
- swap d6 *│
- move.w (a4)+,d6 *│
- BR_00: move.l d6,reg *│
- lsr.l d7,reg *│
- .endm *┘
-
- B_FB .macro bitn *┐マクロ:読まなかったことにする
- addq.w #bitn,d7 *│
- .endm *┘
-
- SET_NUM .macro num *┐マクロ:数値設定(意味不明)
- sub.w #num-1,d4 *│
- bcc PicX_04-(num-1)*6 *│
- moveq.l #num,d3 *│
- add.w d3,d4 *│
- bra PicX_10 *┘
- .endm
-
- SET_NUMd .macro num *┐マクロ:数値設定(意味不明)
- dbra d4,PicX_04-6 *│
- moveq.l #2,d3 *│
- add.w d3,d4 *│
- bra PicX_10 *┘
- .endm
-
- SET_NM2 .macro *┐マクロ:数値設定(笑)
- addq.w #1,d4 *│
- sub.w d3,d4 *│
- bcc PicX_05 *│
- add.w d3,d4 *│
- bra PicX_10 *┘
- .endm
-
- SET_NM3 .macro *┐マクロ:数値設定(^_^;
- addq.w #1,d4 *│
- sub.l d3,d4 *│
- bcc PicX_05 *│
- add.l d3,d4 *│
- bra PicX_10 *┘
- .endm
-
- SET_NM3_JF .macro *┐マクロ:数値設定(^_^;
- addq.w #1,d4 *│
- sub.l d3,d4 *│
- bcc PicX_05 *┘
- add.l d3,d4 *
- .endm
-
- UpC = -1024+2
- UpL1 = -1024-2+2
- UpR1 = -1024+2+2
- UpL2 = -1024-4+2
- UpR2 = -1024+4+2
-
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- PJ: dc.w PALsel_16-PJ *┐色数モード毎のジャンプ先オフセット
- dc.w PALsel_256-PJ *│
- dc.w PALsel32768-PJ *│
- dc.w PALsel65536-PJ *┘
-
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- PicX: move.w PIC_TYP(a6),d0 *┐
- add.w d0,d0 *│a5 = パレット取得の処理アドレス
- move.w PJ(pc,d0.w),d0 *│
- lea PJ(pc,d0.w),a5 *┘
-
- movea.l VRAMADR(a6),a0 * a0.l = VRAMポインタ
-
- suba.l a3,a3 * a3.l = キャシュ用
-
- moveq.l #0,d7 * d7.l = ビットカウンタ
-
- move.l #255,d2 * d2.l = #255の代わり
-
- moveq.l #0,d4 *┐
- move.w PSIZE_X(a6),d4 *│d4.l = 横サイズカウンタ
- subq.w #1,d4 *┘
-
- lea 16.w,a1 * a1.l = #16の代わり
-
- move.w #UpC,d5 *
-
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- * 次の変化点までの距離を求める。
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- Wyle: B_TEST *<x>
- bne.s W_1x *
-
- W_0x: B_TEST *<0x>
- bne.s W_01 *
-
- W_00: jmp (a5) *<00> =1
-
- W_01: SET_NUMd *<01> =2
-
- W_1x: B_TEST *<1x>
- bne.s W_11 *
-
- W_10xx: B_TEST *<10xx>
- bne.s W_101x *
-
- B_TEST *<100x>
- bne.s W_1001 *
- SET_NUM 3 *<1000> =3
- W_1001: SET_NUM 4 *<1001> =4
-
- W_101x: B_TEST *<101x>
- bne.s W_1011 *
- SET_NUM 5 *<1010> =5
- W_1011: SET_NUM 6 *<1011> =6
-
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*<11_xxxxxxxx>
- W_11: B_READ #8,d0 *┐
- and.w d2,d0 *│ビット状態に応じてジャンプさせる
- add.w d0,d0 *│
- move.w WJ(pc,d0.w),d0 *│
- jmp WJ(pc,d0.w) *┘
-
- WJ: dc.w w0000xxxx-WJ,w0000xxxx-WJ,w0000xxxx-WJ,w0000xxxx-WJ
- dc.w w0000xxxx-WJ,w0000xxxx-WJ,w0000xxxx-WJ,w0000xxxx-WJ
- dc.w w0000xxxx-WJ,w0000xxxx-WJ,w0000xxxx-WJ,w0000xxxx-WJ
- dc.w w0000xxxx-WJ,w0000xxxx-WJ,w0000xxxx-WJ,w0000xxxx-WJ
- dc.w w0001xxxx-WJ,w0001xxxx-WJ,w0001xxxx-WJ,w0001xxxx-WJ
- dc.w w0001xxxx-WJ,w0001xxxx-WJ,w0001xxxx-WJ,w0001xxxx-WJ
- dc.w w0001xxxx-WJ,w0001xxxx-WJ,w0001xxxx-WJ,w0001xxxx-WJ
- dc.w w0001xxxx-WJ,w0001xxxx-WJ,w0001xxxx-WJ,w0001xxxx-WJ
- dc.w w0010xxxx-WJ,w0010xxxx-WJ,w0010xxxx-WJ,w0010xxxx-WJ
- dc.w w0010xxxx-WJ,w0010xxxx-WJ,w0010xxxx-WJ,w0010xxxx-WJ
- dc.w w0010xxxx-WJ,w0010xxxx-WJ,w0010xxxx-WJ,w0010xxxx-WJ
- dc.w w0010xxxx-WJ,w0010xxxx-WJ,w0010xxxx-WJ,w0010xxxx-WJ
- dc.w w0011xxxx-WJ,w0011xxxx-WJ,w0011xxxx-WJ,w0011xxxx-WJ
- dc.w w0011xxxx-WJ,w0011xxxx-WJ,w0011xxxx-WJ,w0011xxxx-WJ
- dc.w w0011xxxx-WJ,w0011xxxx-WJ,w0011xxxx-WJ,w0011xxxx-WJ
- dc.w w0011xxxx-WJ,w0011xxxx-WJ,w0011xxxx-WJ,w0011xxxx-WJ
- dc.w w0100xxxx-WJ,w0100xxxx-WJ,w0100xxxx-WJ,w0100xxxx-WJ
- dc.w w0100xxxx-WJ,w0100xxxx-WJ,w0100xxxx-WJ,w0100xxxx-WJ
- dc.w w0100xxxx-WJ,w0100xxxx-WJ,w0100xxxx-WJ,w0100xxxx-WJ
- dc.w w0100xxxx-WJ,w0100xxxx-WJ,w0100xxxx-WJ,w0100xxxx-WJ
- dc.w w0101xxxx-WJ,w0101xxxx-WJ,w0101xxxx-WJ,w0101xxxx-WJ
- dc.w w0101xxxx-WJ,w0101xxxx-WJ,w0101xxxx-WJ,w0101xxxx-WJ
- dc.w w0101xxxx-WJ,w0101xxxx-WJ,w0101xxxx-WJ,w0101xxxx-WJ
- dc.w w0101xxxx-WJ,w0101xxxx-WJ,w0101xxxx-WJ,w0101xxxx-WJ
- dc.w w0110xxxx-WJ,w0110xxxx-WJ,w0110xxxx-WJ,w0110xxxx-WJ
- dc.w w0110xxxx-WJ,w0110xxxx-WJ,w0110xxxx-WJ,w0110xxxx-WJ
- dc.w w0110xxxx-WJ,w0110xxxx-WJ,w0110xxxx-WJ,w0110xxxx-WJ
- dc.w w0110xxxx-WJ,w0110xxxx-WJ,w0110xxxx-WJ,w0110xxxx-WJ
- dc.w w0111xxxx-WJ,w0111xxxx-WJ,w0111xxxx-WJ,w0111xxxx-WJ
- dc.w w0111xxxx-WJ,w0111xxxx-WJ,w0111xxxx-WJ,w0111xxxx-WJ
- dc.w w0111xxxx-WJ,w0111xxxx-WJ,w0111xxxx-WJ,w0111xxxx-WJ
- dc.w w0111xxxx-WJ,w0111xxxx-WJ,w0111xxxx-WJ,w0111xxxx-WJ
- dc.w w100000xx-WJ,w100000xx-WJ,w100000xx-WJ,w100000xx-WJ
- dc.w w100001xx-WJ,w100001xx-WJ,w100001xx-WJ,w100001xx-WJ
- dc.w w100010xx-WJ,w100010xx-WJ,w100010xx-WJ,w100010xx-WJ
- dc.w w100011xx-WJ,w100011xx-WJ,w100011xx-WJ,w100011xx-WJ
- dc.w w100100xx-WJ,w100100xx-WJ,w100100xx-WJ,w100100xx-WJ
- dc.w w100101xx-WJ,w100101xx-WJ,w100101xx-WJ,w100101xx-WJ
- dc.w w100110xx-WJ,w100110xx-WJ,w100110xx-WJ,w100110xx-WJ
- dc.w w100111xx-WJ,w100111xx-WJ,w100111xx-WJ,w100111xx-WJ
- dc.w w101000xx-WJ,w101000xx-WJ,w101000xx-WJ,w101000xx-WJ
- dc.w w101001xx-WJ,w101001xx-WJ,w101001xx-WJ,w101001xx-WJ
- dc.w w101010xx-WJ,w101010xx-WJ,w101010xx-WJ,w101010xx-WJ
- dc.w w101011xx-WJ,w101011xx-WJ,w101011xx-WJ,w101011xx-WJ
- dc.w w101100xx-WJ,w101100xx-WJ,w101100xx-WJ,w101100xx-WJ
- dc.w w101101xx-WJ,w101101xx-WJ,w101101xx-WJ,w101101xx-WJ
- dc.w w101110xx-WJ,w101110xx-WJ,w101110xx-WJ,w101110xx-WJ
- dc.w w101111xx-WJ,w101111xx-WJ,w101111xx-WJ,w101111xx-WJ
- dc.w w11000000-WJ,w11000001-WJ,w11000010-WJ,w11000011-WJ
- dc.w w11000100-WJ,w11000101-WJ,w11000110-WJ,w11000111-WJ
- dc.w w11001000-WJ,w11001001-WJ,w11001010-WJ,w11001011-WJ
- dc.w w11001100-WJ,w11001101-WJ,w11001110-WJ,w11001111-WJ
- dc.w w11010000-WJ,w11010001-WJ,w11010010-WJ,w11010011-WJ
- dc.w w11010100-WJ,w11010101-WJ,w11010110-WJ,w11010111-WJ
- dc.w w11011000-WJ,w11011001-WJ,w11011010-WJ,w11011011-WJ
- dc.w w11011100-WJ,w11011101-WJ,w11011110-WJ,w11011111-WJ
- dc.w w1110oooo-WJ,w1110oooo-WJ,w1110oooo-WJ,w1110oooo-WJ
- dc.w w1110oooo-WJ,w1110oooo-WJ,w1110oooo-WJ,w1110oooo-WJ
- dc.w w1110oooo-WJ,w1110oooo-WJ,w1110oooo-WJ,w1110oooo-WJ
- dc.w w1110oooo-WJ,w1110oooo-WJ,w1110oooo-WJ,w1110oooo-WJ
- dc.w w11110ooo-WJ,w11110ooo-WJ,w11110ooo-WJ,w11110ooo-WJ
- dc.w w11110ooo-WJ,w11110ooo-WJ,w11110ooo-WJ,w11110ooo-WJ
- dc.w w111110oo-WJ,w111110oo-WJ,w111110oo-WJ,w111110oo-WJ
- dc.w w1111110o-WJ,w1111110o-WJ,w11111110-WJ,w11111111-WJ
-
- w0000xxxx: B_FB 4
- SET_NUM 7
- w0001xxxx: B_FB 4
- SET_NUM 8
- w0010xxxx: B_FB 4
- SET_NUM 9
- w0011xxxx: B_FB 4
- SET_NUM 10
- w0100xxxx: B_FB 4
- SET_NUM 11
- w0101xxxx: B_FB 4
- SET_NUM 12
- w0110xxxx: B_FB 4
- SET_NUM 13
- w0111xxxx: B_FB 4
- SET_NUM 14
-
- w100000xx: B_FB 2
- SET_NUM 15
- w100001xx: B_FB 2
- SET_NUM 16
- w100010xx: B_FB 2
- SET_NUM 17
- w100011xx: B_FB 2
- SET_NUM 18
- w100100xx: B_FB 2
- SET_NUM 19
- w100101xx: B_FB 2
- SET_NUM 20
- w100110xx: B_FB 2
- SET_NUM 21
- w100111xx: B_FB 2
- SET_NUM 22
- w101000xx: B_FB 2
- SET_NUM 23
- w101001xx: B_FB 2
- SET_NUM 24
- w101010xx: B_FB 2
- SET_NUM 25
- w101011xx: B_FB 2
- SET_NUM 26
- w101100xx: B_FB 2
- SET_NUM 27
- w101101xx: B_FB 2
- SET_NUM 28
- w101110xx: B_FB 2
- SET_NUM 29
- w101111xx: B_FB 2
- SET_NUM 30
-
- w11000000: SET_NUM 31
- w11000001: SET_NUM 32
- w11000010: SET_NUM 33
- w11000011: SET_NUM 34
- w11000100: SET_NUM 35
- w11000101: SET_NUM 36
- w11000110: SET_NUM 37
- w11000111: SET_NUM 38
- w11001000: SET_NUM 39
- w11001001: SET_NUM 40
- w11001010: SET_NUM 41
- w11001011: SET_NUM 42
- w11001100: SET_NUM 43
- w11001101: SET_NUM 44
- w11001110: SET_NUM 45
- w11001111: SET_NUM 46
- w11010000: SET_NUM 47
- w11010001: SET_NUM 48
- w11010010: SET_NUM 49
- w11010011: SET_NUM 50
- w11010100: SET_NUM 51
- w11010101: SET_NUM 52
- w11010110: SET_NUM 53
- w11010111: SET_NUM 54
- w11011000: SET_NUM 55
- w11011001: SET_NUM 56
- w11011010: SET_NUM 57
- w11011011: SET_NUM 58
- w11011100: SET_NUM 59
- w11011101: SET_NUM 60
- w11011110: SET_NUM 61
- w11011111: SET_NUM 62
-
- w1110oooo: B_READ #6-4,d0 *┐63~126
- moveq.l #63,d3 *│
- and.w d3,d0 *│
- add.w d0,d3 *│
- SET_NM2 *┘
-
- w11110ooo: B_READ #7-3,d0 *┐127~254
- moveq.l #127,d3 *│
- and.w d3,d0 *│
- add.w d0,d3 *│
- SET_NM2 *┘
-
- w111110oo: B_READ #8-2,d3 *┐255~510
- and.l d2,d3 *│
- add.w d2,d3 *│
- SET_NM2 *┘
-
- w1111110o: B_READ #9-1,d0 *┐511~1022
- move.l #511,d3 *│
- and.w d3,d0 *│
- add.w d0,d3 *│
- SET_NM2 *┘
-
- w11111110: B_READ #10,d0 *┐1023~2046
- move.l #1023,d3 *│
- and.w d3,d0 *│
- add.w d0,d3 *│
- SET_NM2 *┘
-
- w11111111: moveq.l #-1,d0 *┐ビット数カウント
- @@: B_TEST *│
- dbeq d0,@b *│
- neg.w d0 *│
- move.l #%10000000000,d3 *│
- lsl.l d0,d3 *│
- subq.l #1,d3 *│
- addi.w #10,d0 *┘
-
- cmpi.w #17,d0 *┐何ビット?
- bcs.s 1f *┘
-
- sub.w a1,d0 *┐
- B_READ d0,d1 *│ロングワードで読む
- B_READ a1,d0 *│
- swap d1 *│
- move.w d0,d1 *│
- and.l d3,d1 *│
- add.l d1,d3 *│
- SET_NM3 *┘
-
- 1: B_READ d0,d0 *┐
- and.l d3,d0 *│ワードで読む
- add.l d0,d3 *│
- SET_NM3_JF *┘
-
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- * 折り返し付き横塗り
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- PicX_10: sub.l d4,d3 *
-
- neg.w d4 *┐
- addi.w #512,d4 *│右端まで塗る
- add.w d4,d4 *x2 *│
- move.w d4,d0 * *│
- add.w d4,d4 *x4 *│
- add.w d0,d4 *x6 *│
- jmp PicX_11(pc,d4.w) *┘
-
- PicX_11: .rept 512 *┐
- move.w (a0),d0 *│2(8)
- move.w -2(a0,d0.w),(a0)+ *│4(18)
- .endm *┘
-
- adda.w DOWNOFS(a6),a0 *┐1段下がる
- moveq.l #0,d4 *│
- move.w PSIZE_X(a6),d4 *│
- subq.w #1,PSIZE_Y(a6) *│
- beq PicX_ex *│
- cmp.l d3,d4 *│
- bcs PicX_10 *│
- sub.l d3,d4 *┘
-
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- PicX_05: add.w d3,d3 *┐(d3-1)ドットを塗る
- move.w JPT_B(pc,d3.w),d3 *│
- jmp JPT_B(pc,d3.w) *┘
-
- CNT = 512 *┐ジャンプテーブル
- JPT_B: .rept 513 *│
- dc.w PicX_02-JPT_B+CNT*6 *│
- CNT = CNT-1 *│
- .endm *┘
-
- PicX_02: .rept 511 *┐
- move.w (a0),d0 *│2(8)
- move.w -2(a0,d0.w),(a0)+ *│4(18)
- .endm *┘
-
- PicX_04: jmp (a5) *パレット取得へ
-
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- * パレット取得
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- PALsel_16:
-
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- PALsel_256:
-
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- PALsel65536: B_READ a1,d1 *16ビット読み込む
-
- move.w d1,d0 *頭が1なら、テーブル番号
- bmi.s READfromTBL *頭が0なら、色コード
-
- add.w d1,d1 *新たに1ビット読み込んで
- B_TEST *65536色データにする
- beq.s @f *
- addq.w #1,d1 *
-
- @@: move.w PR_BUF+2(a6,a3.w),a3 *┐テーブルにセットする
- move.w d1,PR_BUF(a6,a3.w) *│
- bra chain *┘
-
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- PALsel32768: B_READ a1,d1 *16ビット読み込む
-
- move.w d1,d0 *頭が1なら、テーブル番号
- bpl.s SETtoTBL *頭が0なら、色コード
-
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- READfromTBL: lsr.w #5,d1 *┐
- andi.w #127*8,d1 *┘d1.w = テーブル番号x8
-
- cmp.w a3,d1 *
- beq.s @f *
-
- move.l PR_BUF+2(a6,d1.w),d3 *18 計122クロック
- move.w d3,a2 *04
- swap d3 *04
- move.w d3,PR_BUF+2(a6,a2.w) *14
- move.w a2,PR_BUF+4(a6,d3.w) *14
- move.w PR_BUF+2(a6,a3.w),d3 *14
- move.w d1,PR_BUF+2(a6,a3.w) *14
- move.w d1,PR_BUF+4(a6,d3.w) *14
- swap d3 *04
- move.w a3,d3 *04
- move.l d3,PR_BUF+2(a6,d1.w) *18
-
- move.w d1,a3
-
- @@: lea (a0),a2 *
- move.w PR_BUF(a6,d1.w),(a0)+ *1ドット書き込み
-
- add.b d0,d0 *┐連鎖の有無フラグ <まず1ビット>
- dbcs d4,Wyle7B *┘
- bcc.s no_chain *┘
-
- B_TEST *┐新たに1ビット読み込んで
- beq.s @f *│8ビットの連鎖データにする
- addq.w #1,d0 *┘ <これで8ビット>
-
- @@: and.w d2,d0 *
- add.w d0,d0 *┐連鎖処理へ、じゃんぷ
- move.w RJ(pc,d0.w),d1 *│
- jmp RJ(pc,d1.w) *┘
-
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- SETtoTBL: add.w d1,d1 *┐
- move.w PR_BUF+2(a6,a3.w),a3 *│テーブルにセットする
- move.w d1,PR_BUF(a6,a3.w) *┘
-
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- * 連鎖処理
- *- - - -*- - - -*- - - -*- - - -*- - - -*- - - -*- - - -
- chain: lea (a0),a2 *
- move.w d1,(a0)+ * 1ドット描き込み
-
- B_TEST *┐連鎖の有無
- dbne d4,Wyle *┘
- beq.s chain_ex *┘
-
- chain_next: B_READ #8,d0 * 8ビット読み込む
-
- and.w d2,d0 *
- add.w d0,d0 *┐連鎖処理へ、じゃんぷ
- move.w RJ(pc,d0.w),d1 *│
- jmp RJ(pc,d1.w) *┘
-
- no_chain: B_FB 7 *連鎖が無いので、7ビット捨てる
-
- chain_ex: adda.w DOWNOFS(a6),a0 *┐連鎖と横ループを抜けたあと
- moveq.l #0,d4 *│
- move.w PSIZE_X(a6),d4 *│
- subq.w #1,d4 *│
- subq.w #1,PSIZE_Y(a6) *│
- bne Wyle *│
- PicX_ex: rts *┘
-
- *+-----------------------------------------------+--------------------------------------+
- *|ジャンプ先テーブル (これをさらに大きくしていけば、ある程度までは高速になる?) |
- *+--------------------------------------------------------------------------------------+
- RJ: dc.w J_000xxxxx-RJ,J_000xxxxx-RJ,J_000xxxxx-RJ,J_000xxxxx-RJ
- dc.w J_000xxxxx-RJ,J_000xxxxx-RJ,J_000xxxxx-RJ,J_000xxxxx-RJ
- dc.w J_000xxxxx-RJ,J_000xxxxx-RJ,J_000xxxxx-RJ,J_000xxxxx-RJ
- dc.w J_000xxxxx-RJ,J_000xxxxx-RJ,J_000xxxxx-RJ,J_000xxxxx-RJ
- dc.w J_000xxxxx-RJ,J_000xxxxx-RJ,J_000xxxxx-RJ,J_000xxxxx-RJ
- dc.w J_000xxxxx-RJ,J_000xxxxx-RJ,J_000xxxxx-RJ,J_000xxxxx-RJ
- dc.w J_000xxxxx-RJ,J_000xxxxx-RJ,J_000xxxxx-RJ,J_000xxxxx-RJ
- dc.w J_000xxxxx-RJ,J_000xxxxx-RJ,J_000xxxxx-RJ,J_000xxxxx-RJ
- dc.w J_0010000x-RJ,J_0010000x-RJ,J_00100010-RJ,J_00100011-RJ
- dc.w J_00100100-RJ,J_00100101-RJ,J_00100110-RJ,J_00100111-RJ
- dc.w J_00101000-RJ,J_00101001-RJ,J_00101010-RJ,J_00101011-RJ
- dc.w J_00101100-RJ,J_00101101-RJ,J_00101110-RJ,J_00101111-RJ
- dc.w J_0011000x-RJ,J_0011000x-RJ,J_00110010-RJ,J_00110011-RJ
- dc.w J_00110100-RJ,J_00110101-RJ,J_00110110-RJ,J_00110111-RJ
- dc.w J_00111000-RJ,J_00111001-RJ,J_00111010-RJ,J_00111011-RJ
- dc.w J_00111100-RJ,J_00111101-RJ,J_00111110-RJ,J_00111111-RJ
- dc.w J_01000xxx-RJ,J_01000xxx-RJ,J_01000xxx-RJ,J_01000xxx-RJ
- dc.w J_01000xxx-RJ,J_01000xxx-RJ,J_01000xxx-RJ,J_01000xxx-RJ
- dc.w J_01001000-RJ,J_01001001-RJ,J_01001010-RJ,J_01001011-RJ
- dc.w J_01001100-RJ,J_01001101-RJ,J_01001110-RJ,J_01001111-RJ
- dc.w J_0101000x-RJ,J_0101000x-RJ,J_01010010-RJ,J_01010011-RJ
- dc.w J_01010100-RJ,J_01010101-RJ,J_01010110-RJ,J_01010111-RJ
- dc.w J_01011000-RJ,J_01011001-RJ,J_01011010-RJ,J_01011011-RJ
- dc.w J_01011100-RJ,J_01011101-RJ,J_01011110-RJ,J_01011111-RJ
- dc.w J_0110000x-RJ,J_0110000x-RJ,J_01100010-RJ,J_01100011-RJ
- dc.w J_01100100-RJ,J_01100101-RJ,J_01100110-RJ,J_01100111-RJ
- dc.w J_01101000-RJ,J_01101001-RJ,J_01101010-RJ,J_01101011-RJ
- dc.w J_01101100-RJ,J_01101101-RJ,J_01101110-RJ,J_01101111-RJ
- dc.w J_0111000x-RJ,J_0111000x-RJ,J_01110010-RJ,J_01110011-RJ
- dc.w J_01110100-RJ,J_01110101-RJ,J_01110110-RJ,J_01110111-RJ
- dc.w J_01111000-RJ,J_01111001-RJ,J_01111010-RJ,J_01111011-RJ
- dc.w J_01111100-RJ,J_01111101-RJ,J_01111110-RJ,J_01111111-RJ
- dc.w J_10000xxx-RJ,J_10000xxx-RJ,J_10000xxx-RJ,J_10000xxx-RJ
- dc.w J_10000xxx-RJ,J_10000xxx-RJ,J_10000xxx-RJ,J_10000xxx-RJ
- dc.w J_10001000-RJ,J_10001001-RJ,J_10001010-RJ,J_10001011-RJ
- dc.w J_10001100-RJ,J_10001101-RJ,J_10001110-RJ,J_10001111-RJ
- dc.w J_1001000x-RJ,J_1001000x-RJ,J_10010010-RJ,J_10010011-RJ
- dc.w J_10010100-RJ,J_10010101-RJ,J_10010110-RJ,J_10010111-RJ
- dc.w J_10011000-RJ,J_10011001-RJ,J_10011010-RJ,J_10011011-RJ
- dc.w J_10011100-RJ,J_10011101-RJ,J_10011110-RJ,J_10011111-RJ
- dc.w J_1010000x-RJ,J_1010000x-RJ,J_10100010-RJ,J_10100011-RJ
- dc.w J_10100100-RJ,J_10100101-RJ,J_10100110-RJ,J_10100111-RJ
- dc.w J_10101000-RJ,J_10101001-RJ,J_10101010-RJ,J_10101011-RJ
- dc.w J_10101100-RJ,J_10101101-RJ,J_10101110-RJ,J_10101111-RJ
- dc.w J_1011000x-RJ,J_1011000x-RJ,J_10110010-RJ,J_10110011-RJ
- dc.w J_10110100-RJ,J_10110101-RJ,J_10110110-RJ,J_10110111-RJ
- dc.w J_10111000-RJ,J_10111001-RJ,J_10111010-RJ,J_10111011-RJ
- dc.w J_10111100-RJ,J_10111101-RJ,J_10111110-RJ,J_10111111-RJ
- dc.w J_11000xxx-RJ,J_11000xxx-RJ,J_11000xxx-RJ,J_11000xxx-RJ
- dc.w J_11000xxx-RJ,J_11000xxx-RJ,J_11000xxx-RJ,J_11000xxx-RJ
- dc.w J_11001000-RJ,J_11001001-RJ,J_11001010-RJ,J_11001011-RJ
- dc.w J_11001100-RJ,J_11001101-RJ,J_11001110-RJ,J_11001111-RJ
- dc.w J_1101000x-RJ,J_1101000x-RJ,J_11010010-RJ,J_11010011-RJ
- dc.w J_11010100-RJ,J_11010101-RJ,J_11010110-RJ,J_11010111-RJ
- dc.w J_11011000-RJ,J_11011001-RJ,J_11011010-RJ,J_11011011-RJ
- dc.w J_11011100-RJ,J_11011101-RJ,J_11011110-RJ,J_11011111-RJ
- dc.w J_1110000x-RJ,J_1110000x-RJ,J_11100010-RJ,J_11100011-RJ
- dc.w J_11100100-RJ,J_11100101-RJ,J_11100110-RJ,J_11100111-RJ
- dc.w J_11101000-RJ,J_11101001-RJ,J_11101010-RJ,J_11101011-RJ
- dc.w J_11101100-RJ,J_11101101-RJ,J_11101110-RJ,J_11101111-RJ
- dc.w J_1111000x-RJ,J_1111000x-RJ,J_11110010-RJ,J_11110011-RJ
- dc.w J_11110100-RJ,J_11110101-RJ,J_11110110-RJ,J_11110111-RJ
- dc.w J_11111000-RJ,J_11111001-RJ,J_11111010-RJ,J_11111011-RJ
- dc.w J_11111100-RJ,J_11111101-RJ,J_11111110-RJ,J_11111111-RJ
-
- *+--------------------------------------------------------------------------------------+
- * 連鎖処理ルーチン
- *+--------------------------------------------------------------------------------------+
- CHAIN_NEXT .macro *<次の連鎖へ>
- bra chain_next *
- .endm
-
- CHAIN00X .macro *<00の次、不足した分の処理>
- B_TEST *┐[00x]
- dbne d4,Wyle *│
- bra chain_00x_01 *
- .endm
-
- CHAIN_EX1: .macro *<連鎖終わりの処理>1bit余ってる
- dbra d4,Wyle1B *
- B_FB 1 *
- bra chain_ex *
- .endm
-
- CHAIN_EX3: .macro *<連鎖終わりの処理>3bit余ってる
- dbra d4,Wyle3B *
- B_FB 3 *
- bra chain_ex *
- .endm
-
- CHAIN_EX5: .macro *<連鎖終わりの処理>5bit余ってる
- dbra d4,Wyle5B *
- B_FB 5 *
- bra chain_ex *
- .endm
-
- *+--------------------------------------------------------------------------------------+
- *chain_00x: B_TEST *┐[00x]
- * dbne d4,Wyle *│
- chain_00x_01: beq chain_ex *┘
- B_TEST *│[001x]
- bne 1f *│
- lea 1024-4(a2),a2 *│[0010]=左2
- move.w #UpR2,(a2) *│
- bra chain_next *│
- 1: lea 1024+4(a2),a2 *│[0011]=右2
- move.w #UpL2,(a2) *│
- bra chain_next *┘
-
- Wyle1B: btst.l #1,d0 *
- bne.s W1B_1x *
-
- W1B_0x: B_TEST *<0x>
- bne.s W1B_01 *
-
- W1B_00: jmp (a5) *<00> =1
-
- W1B_01: SET_NUMd *<01> =2
-
- W1B_1x: B_TEST *<1x>
- beq W_10xx *
- bra W_11 *
-
-
-
- Wyle7B: B_FB 5
- andi.w #%11100000,d0
- move.w Wyle7Btbl(pc,d0.w),d0
- jmp Wyle7Btbl(pc,d0.w)
-
- Wyle7Btbl: .rept 16
- dc.w W_00-Wyle7Btbl
- .endm
- .rept 16
- dc.w W_00-Wyle7Btbl
- .endm
- .rept 16
- dc.w W_01-Wyle7Btbl
- .endm
- .rept 16
- dc.w W_01-Wyle7Btbl
- .endm
- .rept 16
- dc.w W3B_100x-Wyle7Btbl
- .endm
- .rept 16
- dc.w W3B_101x-Wyle7Btbl
- .endm
- .rept 16
- dc.w W_11-Wyle7Btbl
- .endm
- .rept 16
- dc.w W_11-Wyle7Btbl
- .endm
-
- Wyle5B: B_FB 3
- andi.w #%111000,d0
- move.w Wyle5Btbl(pc,d0.w),d0
- jmp Wyle5Btbl(pc,d0.w)
-
- Wyle5Btbl: .rept 4
- dc.w W_00-Wyle5Btbl
- .endm
- .rept 4
- dc.w W_00-Wyle5Btbl
- .endm
- .rept 4
- dc.w W_01-Wyle5Btbl
- .endm
- .rept 4
- dc.w W_01-Wyle5Btbl
- .endm
- .rept 4
- dc.w W3B_100x-Wyle5Btbl
- .endm
- .rept 4
- dc.w W3B_101x-Wyle5Btbl
- .endm
- .rept 4
- dc.w W_11-Wyle5Btbl
- .endm
- .rept 4
- dc.w W_11-Wyle5Btbl
- .endm
-
- Wyle3B: B_FB 1
- andi.w #%1110,d0
- move.w Wyle3Btbl(pc,d0.w),d0
- jmp Wyle3Btbl(pc,d0.w)
-
- Wyle3Btbl: dc.w W_00-Wyle3Btbl
- dc.w W_00-Wyle3Btbl
- dc.w W_01-Wyle3Btbl
- dc.w W_01-Wyle3Btbl
- dc.w W3B_100x-Wyle3Btbl
- dc.w W3B_101x-Wyle3Btbl
- dc.w W_11-Wyle3Btbl
- dc.w W_11-Wyle3Btbl
-
- W3B_100x: subq.w #1,d7
- B_TEST *<100x>
- bne.s W3B_1001 *
- SET_NUM 3 *<1000> =3
- W3B_1001: SET_NUM 4 *<1001> =4
-
- W3B_101x: subq.w #1,d7
- B_TEST *<101x>
- bne.s W3B_1011 *
- SET_NUM 5 *<1010> =5
- W3B_1011: SET_NUM 6 *<1011> =6
-
- *+--------------------------------------------------------------------------------------+
- * ここからの連鎖処理ルーチンは、Cのプログラムで自動生成し、少し手を加えました。
- *+--------------------------------------------------------------------------------------+
- J_000xxxxx: *終
- CHAIN_EX5
-
- J_0010000x: *左2/終
- lea 1024-4(a2),a2
- move.w #UpR2,(a2)
- CHAIN_EX1
-
- J_00100010: *左2/左2/
- lea 2048-8(a2),a2
- move.w #UpR2,(a2)
- move.w (a2),-1024+4(a2)
- CHAIN_NEXT
-
- J_00100011: *左2/右2/
- lea 2048+0(a2),a2
- move.w #UpR2,-1024-4(a2)
- move.w #UpL2,(a2)
- CHAIN_NEXT
-
- J_00100100: *左2/左1/00/
- lea 2048-6(a2),a2
- move.w #UpR2,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN00X
-
- J_00100101: *左2/左1/左1/
- lea 3072-8(a2),a2
- move.w #UpR2,-2048+4(a2)
- move.w #UpR1,(a2)
- move.w (a2),-1024+2(a2)
- CHAIN_NEXT
-
- J_00100110: *左2/左1/中1/
- lea 3072-6(a2),a2
- move.w #UpR2,-2048+2(a2)
- move.w #UpR1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_00100111: *左2/左1/右1/
- lea 3072-4(a2),a2
- move.w #UpR2,-2048+0(a2)
- move.w #UpR1,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN_NEXT
-
- J_00101000: *左2/中1/00/
- lea 2048-4(a2),a2
- move.w #UpR2,-1024+0(a2)
- move.w d5,(a2)
- CHAIN00X
-
- J_00101001: *左2/中1/左1/
- lea 3072-6(a2),a2
- move.w #UpR2,-2048+2(a2)
- move.w d5,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN_NEXT
-
- J_00101010: *左2/中1/中1/
- lea 3072-4(a2),a2
- move.w #UpR2,-2048+0(a2)
- move.w d5,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_00101011: *左2/中1/右1/
- lea 3072-2(a2),a2
- move.w #UpR2,-2048-2(a2)
- move.w d5,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN_NEXT
-
- J_00101100: *左2/右1/00/
- lea 2048-2(a2),a2
- move.w #UpR2,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN00X
-
- J_00101101: *左2/右1/左1/
- lea 3072-4(a2),a2
- move.w #UpR2,-2048+0(a2)
- move.w #UpL1,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN_NEXT
-
- J_00101110: *左2/右1/中1/
- lea 3072-2(a2),a2
- move.w #UpR2,-2048-2(a2)
- move.w #UpL1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_00101111: *左2/右1/右1/
- lea 3072+0(a2),a2
- move.w #UpR2,-2048-4(a2)
- move.w #UpL1,(a2)
- move.w (a2),-1024-2(a2)
- CHAIN_NEXT
-
- J_0011000x: *右2/終
- lea 1024+4(a2),a2
- move.w #UpL2,(a2)
- CHAIN_EX1
-
- J_00110010: *右2/左2/
- lea 2048+0(a2),a2
- move.w #UpL2,-1024+4(a2)
- move.w #UpR2,(a2)
- CHAIN_NEXT
-
- J_00110011: *右2/右2/
- lea 2048+8(a2),a2
- move.w #UpL2,(a2)
- move.w (a2),-1024-4(a2)
- CHAIN_NEXT
-
- J_00110100: *右2/左1/00/
- lea 2048+2(a2),a2
- move.w #UpL2,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN00X
-
- J_00110101: *右2/左1/左1/
- lea 3072+0(a2),a2
- move.w #UpL2,-2048+4(a2)
- move.w #UpR1,(a2)
- move.w (a2),-1024+2(a2)
- CHAIN_NEXT
-
- J_00110110: *右2/左1/中1/
- lea 3072+2(a2),a2
- move.w #UpL2,-2048+2(a2)
- move.w #UpR1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_00110111: *右2/左1/右1/
- lea 3072+4(a2),a2
- move.w #UpL2,-2048+0(a2)
- move.w #UpR1,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN_NEXT
-
- J_00111000: *右2/中1/00/
- lea 2048+4(a2),a2
- move.w #UpL2,-1024+0(a2)
- move.w d5,(a2)
- CHAIN00X
-
- J_00111001: *右2/中1/左1/
- lea 3072+2(a2),a2
- move.w #UpL2,-2048+2(a2)
- move.w d5,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN_NEXT
-
- J_00111010: *右2/中1/中1/
- lea 3072+4(a2),a2
- move.w #UpL2,-2048+0(a2)
- move.w d5,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_00111011: *右2/中1/右1/
- lea 3072+6(a2),a2
- move.w #UpL2,-2048-2(a2)
- move.w d5,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN_NEXT
-
- J_00111100: *右2/右1/00/
- lea 2048+6(a2),a2
- move.w #UpL2,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN00X
-
- J_00111101: *右2/右1/左1/
- lea 3072+4(a2),a2
- move.w #UpL2,-2048+0(a2)
- move.w #UpL1,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN_NEXT
-
- J_00111110: *右2/右1/中1/
- lea 3072+6(a2),a2
- move.w #UpL2,-2048-2(a2)
- move.w #UpL1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_00111111: *右2/右1/右1/
- lea 3072+8(a2),a2
- move.w #UpL2,-2048-4(a2)
- move.w #UpL1,(a2)
- move.w (a2),-1024-2(a2)
- CHAIN_NEXT
-
- J_01000xxx: *左1/終
- lea 1024-2(a2),a2
- move.w #UpR1,(a2)
- CHAIN_EX3
-
- J_01001000: *左1/左2/00/
- lea 2048-6(a2),a2
- move.w #UpR1,-1024+4(a2)
- move.w #UpR2,(a2)
- CHAIN00X
-
- J_01001001: *左1/左2/左1/
- lea 3072-8(a2),a2
- move.w #UpR1,(a2)
- move.w (a2),-2048+6(a2)
- move.w #UpR2,-1024+2(a2)
- CHAIN_NEXT
-
- J_01001010: *左1/左2/中1/
- lea 3072-6(a2),a2
- move.w #UpR1,-2048+4(a2)
- move.w #UpR2,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_01001011: *左1/左2/右1/
- lea 3072-4(a2),a2
- move.w #UpR1,-2048+2(a2)
- move.w #UpR2,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN_NEXT
-
- J_01001100: *左1/右2/00/
- lea 2048+2(a2),a2
- move.w #UpR1,-1024-4(a2)
- move.w #UpL2,(a2)
- CHAIN00X
-
- J_01001101: *左1/右2/左1/
- lea 3072+0(a2),a2
- move.w #UpR1,(a2)
- move.w (a2),-2048-2(a2)
- move.w #UpL2,-1024+2(a2)
- CHAIN_NEXT
-
- J_01001110: *左1/右2/中1/
- lea 3072+2(a2),a2
- move.w #UpR1,-2048-4(a2)
- move.w #UpL2,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_01001111: *左1/右2/右1/
- lea 3072+4(a2),a2
- move.w #UpR1,-2048-6(a2)
- move.w #UpL2,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN_NEXT
-
- J_0101000x: *左1/左1/終
- lea 2048-4(a2),a2
- move.w #UpR1,(a2)
- move.w (a2),-1024+2(a2)
- CHAIN_EX1
-
- J_01010010: *左1/左1/左2/
- lea 3072-8(a2),a2
- move.w #UpR1,-2048+6(a2)
- move.w #UpR1,-1024+4(a2)
- move.w #UpR2,(a2)
- CHAIN_NEXT
-
- J_01010011: *左1/左1/右2/
- lea 3072+0(a2),a2
- move.w #UpR1,-2048-2(a2)
- move.w #UpR1,-1024-4(a2)
- move.w #UpL2,(a2)
- CHAIN_NEXT
-
- J_01010100: *左1/左1/左1/00/
- lea 3072-6(a2),a2
- addq.w #2,d5
- move.w d5,-2048+4(a2)
- move.w d5,-1024+2(a2)
- move.w d5,(a2)
- subq.w #2,d5
- CHAIN00X
-
- J_01010101: *左1/左1/左1/左1/
- lea 4096-8(a2),a2
- addq.w #2,d5
- move.w d5,-3072+6(a2)
- move.w d5,-2048+4(a2)
- move.w d5,-1024+2(a2)
- move.w d5,(a2)
- subq.w #2,d5
- CHAIN_NEXT
-
- J_01010110: *左1/左1/左1/中1/
- lea 4096-6(a2),a2
- addq.w #2,d5
- move.w d5,-3072+4(a2)
- move.w d5,-2048+2(a2)
- move.w d5,-1024+0(a2)
- subq.w #2,d5
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_01010111: *左1/左1/左1/右1/
- lea 4096-4(a2),a2
- addq.w #2,d5
- move.w d5,-3072+2(a2)
- move.w d5,-2048+0(a2)
- move.w d5,-1024-2(a2)
- subq.w #2,d5
- move.w #UpL1,(a2)
- CHAIN_NEXT
-
- J_01011000: *左1/左1/中1/00/
- lea 3072-4(a2),a2
- move.w #UpR1,-2048+2(a2)
- move.w #UpR1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN00X
-
- J_01011001: *左1/左1/中1/左1/
- lea 4096-6(a2),a2
- addq.w #2,d5
- move.w d5,-3072+4(a2)
- move.w d5,-2048+2(a2)
- move.w d5,(a2)
- subq.w #2,d5
- move.w d5,-1024+2(a2)
- CHAIN_NEXT
-
- J_01011010: *左1/左1/中1/中1/
- lea 4096-4(a2),a2
- move.w #UpR1,-3072+2(a2)
- move.w #UpR1,-2048+0(a2)
- move.w d5,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_01011011: *左1/左1/中1/右1/
- lea 4096-2(a2),a2
- move.w #UpR1,-3072+0(a2)
- move.w #UpR1,-2048-2(a2)
- move.w d5,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN_NEXT
-
- J_01011100: *左1/左1/右1/00/
- lea 3072-2(a2),a2
- move.w #UpR1,-2048+0(a2)
- move.w #UpR1,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN00X
-
- J_01011101: *左1/左1/右1/左1/
- lea 4096-4(a2),a2
- addq.w #2,d5
- move.w d5,-3072+2(a2)
- move.w d5,-2048+0(a2)
- move.w #UpL1,-1024+2(a2)
- move.w d5,(a2)
- subq.w #2,d5
- CHAIN_NEXT
-
- J_01011110: *左1/左1/右1/中1/
- lea 4096-2(a2),a2
- move.w #UpR1,-3072+0(a2)
- move.w #UpR1,-2048-2(a2)
- move.w #UpL1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_01011111: *左1/左1/右1/右1/
- lea 4096+0(a2),a2
- addq.w #2,d5
- move.w d5,-3072-2(a2)
- move.w d5,-2048-4(a2)
- subq.w #4,d5
- move.w d5,-1024-2(a2)
- move.w d5,(a2)
- addq.w #2,d5
- CHAIN_NEXT
-
- J_0110000x: *左1/中1/終
- lea 2048-2(a2),a2
- move.w #UpR1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_EX1
-
- J_01100010: *左1/中1/左2/
- lea 3072-6(a2),a2
- move.w #UpR1,-2048+4(a2)
- move.w d5,-1024+4(a2)
- move.w #UpR2,(a2)
- CHAIN_NEXT
-
- J_01100011: *左1/中1/右2/
- lea 3072+2(a2),a2
- move.w #UpR1,-2048-4(a2)
- move.w d5,-1024-4(a2)
- move.w #UpL2,(a2)
- CHAIN_NEXT
-
- J_01100100: *左1/中1/左1/00/
- lea 3072-4(a2),a2
- move.w #UpR1,(a2)
- move.w (a2),-2048+2(a2)
- move.w d5,-1024+2(a2)
- CHAIN00X
-
- J_01100101: *左1/中1/左1/左1/
- lea 4096-6(a2),a2
- addq.w #2,d5
- move.w d5,-3072+4(a2)
- move.w d5,-1024+2(a2)
- move.w d5,(a2)
- subq.w #2,d5
- move.w d5,-2048+4(a2)
- CHAIN_NEXT
-
- J_01100110: *左1/中1/左1/中1/
- lea 4096-4(a2),a2
- move.w #UpR1,-3072+2(a2)
- move.w d5,-2048+2(a2)
- move.w #UpR1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_01100111: *左1/中1/左1/右1/
- lea 4096-2(a2),a2
- move.w #UpR1,-3072+0(a2)
- move.w d5,-2048+0(a2)
- move.w #UpR1,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN_NEXT
-
- J_01101000: *左1/中1/中1/00/
- lea 3072-2(a2),a2
- move.w #UpR1,-2048+0(a2)
- move.w d5,-1024+0(a2)
- move.w d5,(a2)
- CHAIN00X
-
- J_01101001: *左1/中1/中1/左1/
- lea 4096-4(a2),a2
- move.w #UpR1,(a2)
- move.w (a2),-3072+2(a2)
- move.w d5,-2048+2(a2)
- move.w d5,-1024+2(a2)
- CHAIN_NEXT
-
- J_01101010: *左1/中1/中1/中1/
- lea 4096-2(a2),a2
- move.w #UpR1,-3072+0(a2)
- move.w d5,-2048+0(a2)
- move.w d5,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_01101011: *左1/中1/中1/右1/
- lea 4096+0(a2),a2
- move.w #UpR1,-3072-2(a2)
- move.w d5,-2048-2(a2)
- move.w d5,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN_NEXT
-
- J_01101100: *左1/中1/右1/00/
- lea 3072+0(a2),a2
- move.w #UpR1,-2048-2(a2)
- move.w d5,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN00X
-
- J_01101101: *左1/中1/右1/左1/
- lea 4096-2(a2),a2
- move.w #UpR1,(a2)
- move.w (a2),-3072+0(a2)
- move.w d5,-2048+0(a2)
- move.w #UpL1,-1024+2(a2)
- CHAIN_NEXT
-
- J_01101110: *左1/中1/右1/中1/
- lea 4096+0(a2),a2
- move.w #UpR1,-3072-2(a2)
- move.w d5,-2048-2(a2)
- move.w #UpL1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_01101111: *左1/中1/右1/右1/
- lea 4096+2(a2),a2
- move.w #UpR1,-3072-4(a2)
- move.w d5,-2048-4(a2)
- move.w #UpL1,(a2)
- move.w (a2),-1024-2(a2)
- CHAIN_NEXT
-
- J_0111000x: *左1/右1/終
- lea 2048+0(a2),a2
- move.w #UpR1,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN_EX1
-
- J_01110010: *左1/右1/左2/
- lea 3072-4(a2),a2
- move.w #UpR1,-2048+2(a2)
- move.w #UpL1,-1024+4(a2)
- move.w #UpR2,(a2)
- CHAIN_NEXT
-
- J_01110011: *左1/右1/右2/
- lea 3072+4(a2),a2
- move.w #UpR1,-2048-6(a2)
- move.w #UpL1,-1024-4(a2)
- move.w #UpL2,(a2)
- CHAIN_NEXT
-
- J_01110100: *左1/右1/左1/00/
- lea 3072-2(a2),a2
- move.w #UpR1,(a2)
- move.w (a2),-2048+0(a2)
- move.w #UpL1,-1024+2(a2)
- CHAIN00X
-
- J_01110101: *左1/右1/左1/左1/
- lea 4096-4(a2),a2
- addq.w #2,d5
- move.w d5,-3072+2(a2)
- move.w #UpL1,-2048+4(a2)
- move.w d5,-1024+2(a2)
- move.w d5,(a2)
- subq.w #2,d5
- CHAIN_NEXT
-
- J_01110110: *左1/右1/左1/中1/
- lea 4096-2(a2),a2
- move.w #UpR1,-3072+0(a2)
- move.w #UpL1,-2048+2(a2)
- move.w #UpR1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_01110111: *左1/右1/左1/右1/
- lea 4096+0(a2),a2
- subq.w #2,d5
- move.w d5,-2048+0(a2)
- move.w d5,(a2)
- addq.w #4,d5
- move.w d5,-3072-2(a2)
- move.w d5,-1024-2(a2)
- subq.w #2,d5
- CHAIN_NEXT
-
- J_01111000: *左1/右1/中1/00/
- lea 3072+0(a2),a2
- move.w #UpR1,-2048-2(a2)
- move.w #UpL1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN00X
-
- J_01111001: *左1/右1/中1/左1/
- lea 4096-2(a2),a2
- move.w #UpR1,(a2)
- move.w (a2),-3072+0(a2)
- move.w #UpL1,-2048+2(a2)
- move.w d5,-1024+2(a2)
- CHAIN_NEXT
-
- J_01111010: *左1/右1/中1/中1/
- lea 4096+0(a2),a2
- move.w #UpR1,-3072-2(a2)
- move.w #UpL1,-2048+0(a2)
- move.w d5,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_01111011: *左1/右1/中1/右1/
- lea 4096+2(a2),a2
- move.w #UpR1,-3072-4(a2)
- move.w #UpL1,(a2)
- move.w (a2),-2048-2(a2)
- move.w d5,-1024-2(a2)
- CHAIN_NEXT
-
- J_01111100: *左1/右1/右1/00/
- lea 3072+2(a2),a2
- move.w #UpR1,-2048-4(a2)
- move.w #UpL1,(a2)
- move.w (a2),-1024-2(a2)
- CHAIN00X
-
- J_01111101: *左1/右1/右1/左1/
- lea 4096+0(a2),a2
- subq.w #2,d5
- move.w d5,-2048+0(a2)
- move.w d5,-1024+2(a2)
- addq.w #4,d5
- move.w d5,-3072-2(a2)
- move.w d5,(a2)
- subq.w #2,d5
- CHAIN_NEXT
-
- J_01111110: *左1/右1/右1/中1/
- lea 4096+2(a2),a2
- move.w #UpR1,-3072-4(a2)
- move.w #UpL1,-2048-2(a2)
- move.w #UpL1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_01111111: *左1/右1/右1/右1/
- lea 4096+4(a2),a2
- move.w #UpR1,-3072-6(a2)
- subq.w #2,d5
- move.w d5,-2048-4(a2)
- move.w d5,-1024-2(a2)
- move.w d5,(a2)
- addq.w #2,d5
- CHAIN_NEXT
-
- J_10000xxx: *中1/終
- lea 1024+0(a2),a2
- move.w d5,(a2)
- CHAIN_EX3
-
- J_10001000: *中1/左2/00/
- lea 2048-4(a2),a2
- move.w d5,-1024+4(a2)
- move.w #UpR2,(a2)
- CHAIN00X
-
- J_10001001: *中1/左2/左1/
- lea 3072-6(a2),a2
- move.w d5,-2048+6(a2)
- move.w #UpR2,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN_NEXT
-
- J_10001010: *中1/左2/中1/
- lea 3072-4(a2),a2
- move.w d5,-2048+4(a2)
- move.w #UpR2,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_10001011: *中1/左2/右1/
- lea 3072-2(a2),a2
- move.w d5,-2048+2(a2)
- move.w #UpR2,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN_NEXT
-
- J_10001100: *中1/右2/00/
- lea 2048+4(a2),a2
- move.w d5,-1024-4(a2)
- move.w #UpL2,(a2)
- CHAIN00X
-
- J_10001101: *中1/右2/左1/
- lea 3072+2(a2),a2
- move.w d5,-2048-2(a2)
- move.w #UpL2,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN_NEXT
-
- J_10001110: *中1/右2/中1/
- lea 3072+4(a2),a2
- move.w d5,-2048-4(a2)
- move.w #UpL2,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_10001111: *中1/右2/右1/
- lea 3072+6(a2),a2
- move.w d5,-2048-6(a2)
- move.w #UpL2,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN_NEXT
-
- J_1001000x: *中1/左1/終
- lea 2048-2(a2),a2
- move.w d5,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN_EX1
-
- J_10010010: *中1/左1/左2/
- lea 3072-6(a2),a2
- move.w d5,-2048+6(a2)
- move.w #UpR1,-1024+4(a2)
- move.w #UpR2,(a2)
- CHAIN_NEXT
-
- J_10010011: *中1/左1/右2/
- lea 3072+2(a2),a2
- move.w d5,-2048-2(a2)
- move.w #UpR1,-1024-4(a2)
- move.w #UpL2,(a2)
- CHAIN_NEXT
-
- J_10010100: *中1/左1/左1/00/
- lea 3072-4(a2),a2
- move.w d5,-2048+4(a2)
- move.w #UpR1,(a2)
- move.w (a2),-1024+2(a2)
- CHAIN00X
-
- J_10010101: *中1/左1/左1/左1/
- lea 4096-6(a2),a2
- move.w d5,-3072+6(a2)
- addq.w #2,d5
- move.w d5,-2048+4(a2)
- move.w d5,-1024+2(a2)
- move.w d5,(a2)
- subq.w #2,d5
- CHAIN_NEXT
-
- J_10010110: *中1/左1/左1/中1/
- lea 4096-4(a2),a2
- move.w d5,-3072+4(a2)
- move.w #UpR1,-2048+2(a2)
- move.w #UpR1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_10010111: *中1/左1/左1/右1/
- lea 4096-2(a2),a2
- move.w d5,-3072+2(a2)
- move.w #UpR1,-2048+0(a2)
- move.w #UpR1,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN_NEXT
-
- J_10011000: *中1/左1/中1/00/
- lea 3072-2(a2),a2
- move.w d5,-2048+2(a2)
- move.w #UpR1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN00X
-
- J_10011001: *中1/左1/中1/左1/
- lea 4096-4(a2),a2
- move.w d5,-3072+4(a2)
- move.w #UpR1,(a2)
- move.w (a2),-2048+2(a2)
- move.w d5,-1024+2(a2)
- CHAIN_NEXT
-
- J_10011010: *中1/左1/中1/中1/
- lea 4096-2(a2),a2
- move.w d5,-3072+2(a2)
- move.w #UpR1,-2048+0(a2)
- move.w d5,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_10011011: *中1/左1/中1/右1/
- lea 4096+0(a2),a2
- move.w d5,-3072+0(a2)
- move.w #UpR1,-2048-2(a2)
- move.w d5,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN_NEXT
-
- J_10011100: *中1/左1/右1/00/
- lea 3072+0(a2),a2
- move.w d5,-2048+0(a2)
- move.w #UpR1,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN00X
-
- J_10011101: *中1/左1/右1/左1/
- lea 4096-2(a2),a2
- move.w d5,-3072+2(a2)
- move.w #UpR1,(a2)
- move.w (a2),-2048+0(a2)
- move.w #UpL1,-1024+2(a2)
- CHAIN_NEXT
-
- J_10011110: *中1/左1/右1/中1/
- lea 4096+0(a2),a2
- move.w d5,-3072+0(a2)
- move.w #UpR1,-2048-2(a2)
- move.w #UpL1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_10011111: *中1/左1/右1/右1/
- lea 4096+2(a2),a2
- move.w d5,-3072-2(a2)
- move.w #UpR1,-2048-4(a2)
- move.w #UpL1,(a2)
- move.w (a2),-1024-2(a2)
- CHAIN_NEXT
-
- J_1010000x: *中1/中1/終
- lea 2048+0(a2),a2
- move.w d5,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_EX1
-
- J_10100010: *中1/中1/左2/
- lea 3072-4(a2),a2
- move.w d5,-2048+4(a2)
- move.w d5,-1024+4(a2)
- move.w #UpR2,(a2)
- CHAIN_NEXT
-
- J_10100011: *中1/中1/右2/
- lea 3072+4(a2),a2
- move.w d5,-2048-4(a2)
- move.w d5,-1024-4(a2)
- move.w #UpL2,(a2)
- CHAIN_NEXT
-
- J_10100100: *中1/中1/左1/00/
- lea 3072-2(a2),a2
- move.w d5,-2048+2(a2)
- move.w d5,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN00X
-
- J_10100101: *中1/中1/左1/左1/
- lea 4096-4(a2),a2
- move.w d5,-3072+4(a2)
- move.w d5,-2048+4(a2)
- move.w #UpR1,(a2)
- move.w (a2),-1024+2(a2)
- CHAIN_NEXT
-
- J_10100110: *中1/中1/左1/中1/
- lea 4096-2(a2),a2
- move.w d5,-3072+2(a2)
- move.w d5,-2048+2(a2)
- move.w #UpR1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_10100111: *中1/中1/左1/右1/
- lea 4096+0(a2),a2
- move.w d5,-3072+0(a2)
- move.w d5,-2048+0(a2)
- move.w #UpR1,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN_NEXT
-
- J_10101000: *中1/中1/中1/00/
- lea 3072+0(a2),a2
- move.w d5,-2048+0(a2)
- move.w d5,-1024+0(a2)
- move.w d5,(a2)
- CHAIN00X
-
- J_10101001: *中1/中1/中1/左1/
- lea 4096-2(a2),a2
- move.w d5,-3072+2(a2)
- move.w d5,-2048+2(a2)
- move.w d5,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN_NEXT
-
- J_10101010: *中1/中1/中1/中1/
- lea 4096+0(a2),a2
- move.w d5,-3072+0(a2)
- move.w d5,-2048+0(a2)
- move.w d5,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_10101011: *中1/中1/中1/右1/
- lea 4096+2(a2),a2
- move.w d5,-3072-2(a2)
- move.w d5,-2048-2(a2)
- move.w d5,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN_NEXT
-
- J_10101100: *中1/中1/右1/00/
- lea 3072+2(a2),a2
- move.w d5,-2048-2(a2)
- move.w d5,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN00X
-
- J_10101101: *中1/中1/右1/左1/
- lea 4096+0(a2),a2
- move.w d5,-3072+0(a2)
- move.w d5,-2048+0(a2)
- move.w #UpL1,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN_NEXT
-
- J_10101110: *中1/中1/右1/中1/
- lea 4096+2(a2),a2
- move.w d5,-3072-2(a2)
- move.w d5,-2048-2(a2)
- move.w #UpL1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_10101111: *中1/中1/右1/右1/
- lea 4096+4(a2),a2
- move.w d5,-3072-4(a2)
- move.w d5,-2048-4(a2)
- move.w #UpL1,(a2)
- move.w (a2),-1024-2(a2)
- CHAIN_NEXT
-
- J_1011000x: *中1/右1/終
- lea 2048+2(a2),a2
- move.w d5,-1024-2(a2)
- move.w #UpL1,(a2)
- CHAIN_EX1
-
- J_10110010: *中1/右1/左2/
- lea 3072-2(a2),a2
- move.w d5,-2048+2(a2)
- move.w #UpL1,-1024+4(a2)
- move.w #UpR2,(a2)
- CHAIN_NEXT
-
- J_10110011: *中1/右1/右2/
- lea 3072+6(a2),a2
- move.w d5,-2048-6(a2)
- move.w #UpL1,-1024-4(a2)
- move.w #UpL2,(a2)
- CHAIN_NEXT
-
- J_10110100: *中1/右1/左1/00/
- lea 3072+0(a2),a2
- move.w d5,-2048+0(a2)
- move.w #UpL1,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN00X
-
- J_10110101: *中1/右1/左1/左1/
- lea 4096-2(a2),a2
- move.w d5,-3072+2(a2)
- move.w #UpL1,-2048+4(a2)
- move.w #UpR1,(a2)
- move.w (a2),-1024+2(a2)
- CHAIN_NEXT
-
- J_10110110: *中1/右1/左1/中1/
- lea 4096+0(a2),a2
- move.w d5,-3072+0(a2)
- move.w #UpL1,-2048+2(a2)
- move.w #UpR1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_10110111: *中1/右1/左1/右1/
- lea 4096+2(a2),a2
- move.w d5,-3072-2(a2)
- move.w #UpL1,(a2)
- move.w (a2),-2048+0(a2)
- move.w #UpR1,-1024-2(a2)
- CHAIN_NEXT
-
- J_10111000: *中1/右1/中1/00/
- lea 3072+2(a2),a2
- move.w d5,-2048-2(a2)
- move.w #UpL1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN00X
-
- J_10111001: *中1/右1/中1/左1/
- lea 4096+0(a2),a2
- move.w d5,-3072+0(a2)
- move.w #UpL1,-2048+2(a2)
- move.w d5,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN_NEXT
-
- J_10111010: *中1/右1/中1/中1/
- lea 4096+2(a2),a2
- move.w d5,-3072-2(a2)
- move.w #UpL1,-2048+0(a2)
- move.w d5,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_10111011: *中1/右1/中1/右1/
- lea 4096+4(a2),a2
- move.w d5,-3072-4(a2)
- move.w #UpL1,(a2)
- move.w (a2),-2048-2(a2)
- move.w d5,-1024-2(a2)
- CHAIN_NEXT
-
- J_10111100: *中1/右1/右1/00/
- lea 3072+4(a2),a2
- move.w d5,-2048-4(a2)
- move.w #UpL1,(a2)
- move.w (a2),-1024-2(a2)
- CHAIN00X
-
- J_10111101: *中1/右1/右1/左1/
- lea 4096+2(a2),a2
- move.w d5,-3072-2(a2)
- move.w #UpL1,-2048+0(a2)
- move.w #UpL1,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN_NEXT
-
- J_10111110: *中1/右1/右1/中1/
- lea 4096+4(a2),a2
- move.w d5,-3072-4(a2)
- move.w #UpL1,-2048-2(a2)
- move.w #UpL1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_10111111: *中1/右1/右1/右1/
- lea 4096+6(a2),a2
- move.w d5,-3072-6(a2)
- subq.w #2,d5
- move.w d5,-2048-4(a2)
- move.w d5,-1024-2(a2)
- move.w d5,(a2)
- addq.w #2,d5
- CHAIN_NEXT
-
- J_11000xxx: *右1/終
- lea 1024+2(a2),a2
- move.w #UpL1,(a2)
- CHAIN_EX3
-
- J_11001000: *右1/左2/00/
- lea 2048-2(a2),a2
- move.w #UpL1,-1024+4(a2)
- move.w #UpR2,(a2)
- CHAIN00X
-
- J_11001001: *右1/左2/左1/
- lea 3072-4(a2),a2
- move.w #UpL1,-2048+6(a2)
- move.w #UpR2,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN_NEXT
-
- J_11001010: *右1/左2/中1/
- lea 3072-2(a2),a2
- move.w #UpL1,-2048+4(a2)
- move.w #UpR2,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_11001011: *右1/左2/右1/
- lea 3072+0(a2),a2
- move.w #UpL1,(a2)
- move.w (a2),-2048+2(a2)
- move.w #UpR2,-1024-2(a2)
- CHAIN_NEXT
-
- J_11001100: *右1/右2/00/
- lea 2048+6(a2),a2
- move.w #UpL1,-1024-4(a2)
- move.w #UpL2,(a2)
- CHAIN00X
-
- J_11001101: *右1/右2/左1/
- lea 3072+4(a2),a2
- move.w #UpL1,-2048-2(a2)
- move.w #UpL2,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN_NEXT
-
- J_11001110: *右1/右2/中1/
- lea 3072+6(a2),a2
- move.w #UpL1,-2048-4(a2)
- move.w #UpL2,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_11001111: *右1/右2/右1/
- lea 3072+8(a2),a2
- move.w #UpL1,(a2)
- move.w (a2),-2048-6(a2)
- move.w #UpL2,-1024-2(a2)
- CHAIN_NEXT
-
- J_1101000x: *右1/左1/終
- lea 2048+0(a2),a2
- move.w #UpL1,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN_EX1
-
- J_11010010: *右1/左1/左2/
- lea 3072-4(a2),a2
- move.w #UpL1,-2048+6(a2)
- move.w #UpR1,-1024+4(a2)
- move.w #UpR2,(a2)
- CHAIN_NEXT
-
- J_11010011: *右1/左1/右2/
- lea 3072+4(a2),a2
- move.w #UpL1,-2048-2(a2)
- move.w #UpR1,-1024-4(a2)
- move.w #UpL2,(a2)
- CHAIN_NEXT
-
- J_11010100: *右1/左1/左1/00/
- lea 3072-2(a2),a2
- move.w #UpL1,-2048+4(a2)
- move.w #UpR1,(a2)
- move.w (a2),-1024+2(a2)
- CHAIN00X
-
- J_11010101: *右1/左1/左1/左1/
- lea 4096-4(a2),a2
- move.w #UpL1,-3072+6(a2)
- addq.w #2,d5
- move.w d5,-2048+4(a2)
- move.w d5,-1024+2(a2)
- move.w d5,(a2)
- subq.w #2,d5
- CHAIN_NEXT
-
- J_11010110: *右1/左1/左1/中1/
- lea 4096-2(a2),a2
- move.w #UpL1,-3072+4(a2)
- move.w #UpR1,-2048+2(a2)
- move.w #UpR1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_11010111: *右1/左1/左1/右1/
- lea 4096+0(a2),a2
- subq.w #2,d5
- move.w d5,-3072+2(a2)
- move.w d5,(a2)
- addq.w #4,d5
- move.w d5,-2048+0(a2)
- move.w d5,-1024-2(a2)
- subq.w #2,d5
- CHAIN_NEXT
-
- J_11011000: *右1/左1/中1/00/
- lea 3072+0(a2),a2
- move.w #UpL1,-2048+2(a2)
- move.w #UpR1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN00X
-
- J_11011001: *右1/左1/中1/左1/
- lea 4096-2(a2),a2
- move.w #UpL1,-3072+4(a2)
- move.w #UpR1,(a2)
- move.w (a2),-2048+2(a2)
- move.w d5,-1024+2(a2)
- CHAIN_NEXT
-
- J_11011010: *右1/左1/中1/中1/
- lea 4096+0(a2),a2
- move.w #UpL1,-3072+2(a2)
- move.w #UpR1,-2048+0(a2)
- move.w d5,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_11011011: *右1/左1/中1/右1/
- lea 4096+2(a2),a2
- move.w #UpL1,(a2)
- move.w (a2),-3072+0(a2)
- move.w #UpR1,-2048-2(a2)
- move.w d5,-1024-2(a2)
- CHAIN_NEXT
-
- J_11011100: *右1/左1/右1/00/
- lea 3072+2(a2),a2
- move.w #UpL1,(a2)
- move.w (a2),-2048+0(a2)
- move.w #UpR1,-1024-2(a2)
- CHAIN00X
-
- J_11011101: *右1/左1/右1/左1/
- lea 4096+0(a2),a2
- subq.w #2,d5
- move.w d5,-3072+2(a2)
- move.w d5,-1024+2(a2)
- addq.w #4,d5
- move.w d5,-2048+0(a2)
- move.w d5,(a2)
- subq.w #2,d5
- CHAIN_NEXT
-
- J_11011110: *右1/左1/右1/中1/
- lea 4096+2(a2),a2
- move.w #UpL1,-3072+0(a2)
- move.w #UpR1,-2048-2(a2)
- move.w #UpL1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_11011111: *右1/左1/右1/右1/
- lea 4096+4(a2),a2
- subq.w #2,d5
- move.w d5,-3072-2(a2)
- move.w d5,-1024-2(a2)
- move.w d5,(a2)
- addq.w #2,d5
- move.w #UpR1,-2048-4(a2)
- CHAIN_NEXT
-
- J_1110000x: *右1/中1/終
- lea 2048+2(a2),a2
- move.w #UpL1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_EX1
-
- J_11100010: *右1/中1/左2/
- lea 3072-2(a2),a2
- move.w #UpL1,-2048+4(a2)
- move.w d5,-1024+4(a2)
- move.w #UpR2,(a2)
- CHAIN_NEXT
-
- J_11100011: *右1/中1/右2/
- lea 3072+6(a2),a2
- move.w #UpL1,-2048-4(a2)
- move.w d5,-1024-4(a2)
- move.w #UpL2,(a2)
- CHAIN_NEXT
-
- J_11100100: *右1/中1/左1/00/
- lea 3072+0(a2),a2
- move.w #UpL1,-2048+2(a2)
- move.w d5,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN00X
-
- J_11100101: *右1/中1/左1/左1/
- lea 4096-2(a2),a2
- move.w #UpL1,-3072+4(a2)
- move.w d5,-2048+4(a2)
- move.w #UpR1,(a2)
- move.w (a2),-1024+2(a2)
- CHAIN_NEXT
-
- J_11100110: *右1/中1/左1/中1/
- lea 4096+0(a2),a2
- move.w #UpL1,-3072+2(a2)
- move.w d5,-2048+2(a2)
- move.w #UpR1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_11100111: *右1/中1/左1/右1/
- lea 4096+2(a2),a2
- move.w #UpL1,(a2)
- move.w (a2),-3072+0(a2)
- move.w d5,-2048+0(a2)
- move.w #UpR1,-1024-2(a2)
- CHAIN_NEXT
-
- J_11101000: *右1/中1/中1/00/
- lea 3072+2(a2),a2
- move.w #UpL1,-2048+0(a2)
- move.w d5,-1024+0(a2)
- move.w d5,(a2)
- CHAIN00X
-
- J_11101001: *右1/中1/中1/左1/
- lea 4096+0(a2),a2
- move.w #UpL1,-3072+2(a2)
- move.w d5,-2048+2(a2)
- move.w d5,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN_NEXT
-
- J_11101010: *右1/中1/中1/中1/
- lea 4096+2(a2),a2
- move.w #UpL1,-3072+0(a2)
- move.w d5,-2048+0(a2)
- move.w d5,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_11101011: *右1/中1/中1/右1/
- lea 4096+4(a2),a2
- move.w #UpL1,(a2)
- move.w (a2),-3072-2(a2)
- move.w d5,-2048-2(a2)
- move.w d5,-1024-2(a2)
- CHAIN_NEXT
-
- J_11101100: *右1/中1/右1/00/
- lea 3072+4(a2),a2
- move.w #UpL1,(a2)
- move.w (a2),-2048-2(a2)
- move.w d5,-1024-2(a2)
- CHAIN00X
-
- J_11101101: *右1/中1/右1/左1/
- lea 4096+2(a2),a2
- move.w #UpL1,-3072+0(a2)
- move.w d5,-2048+0(a2)
- move.w #UpL1,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN_NEXT
-
- J_11101110: *右1/中1/右1/中1/
- lea 4096+4(a2),a2
- move.w #UpL1,-3072-2(a2)
- move.w d5,-2048-2(a2)
- move.w #UpL1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_11101111: *右1/中1/右1/右1/
- lea 4096+6(a2),a2
- subq.w #2,d5
- move.w d5,-3072-4(a2)
- move.w d5,-1024-2(a2)
- move.w d5,(a2)
- addq.w #2,d5
- move.w d5,-2048-4(a2)
- CHAIN_NEXT
-
- J_1111000x: *右1/右1/終
- lea 2048+4(a2),a2
- move.w #UpL1,(a2)
- move.w (a2),-1024-2(a2)
- CHAIN_EX1
-
- J_11110010: *右1/右1/左2/
- lea 3072+0(a2),a2
- move.w #UpL1,-2048+2(a2)
- move.w #UpL1,-1024+4(a2)
- move.w #UpR2,(a2)
- CHAIN_NEXT
-
- J_11110011: *右1/右1/右2/
- lea 3072+8(a2),a2
- move.w #UpL1,-2048-6(a2)
- move.w #UpL1,-1024-4(a2)
- move.w #UpL2,(a2)
- CHAIN_NEXT
-
- J_11110100: *右1/右1/左1/00/
- lea 3072+2(a2),a2
- move.w #UpL1,-2048+0(a2)
- move.w #UpL1,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN00X
-
- J_11110101: *右1/右1/左1/左1/
- lea 4096+0(a2),a2
- subq.w #2,d5
- move.w d5,-3072+2(a2)
- move.w d5,-2048+4(a2)
- addq.w #4,d5
- move.w d5,-1024+2(a2)
- move.w d5,(a2)
- subq.w #2,d5
- CHAIN_NEXT
-
- J_11110110: *右1/右1/左1/中1/
- lea 4096+2(a2),a2
- move.w #UpL1,-3072+0(a2)
- move.w #UpL1,-2048+2(a2)
- move.w #UpR1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_11110111: *右1/右1/左1/右1/
- lea 4096+4(a2),a2
- subq.w #2,d5
- move.w d5,-3072-2(a2)
- move.w d5,-2048+0(a2)
- move.w d5,(a2)
- addq.w #2,d5
- move.w #UpR1,-1024-2(a2)
- CHAIN_NEXT
-
- J_11111000: *右1/右1/中1/00/
- lea 3072+4(a2),a2
- move.w #UpL1,-2048-2(a2)
- move.w #UpL1,-1024+0(a2)
- move.w d5,(a2)
- CHAIN00X
-
- J_11111001: *右1/右1/中1/左1/
- lea 4096+2(a2),a2
- move.w #UpL1,-3072+0(a2)
- move.w #UpL1,-2048+2(a2)
- move.w d5,-1024+2(a2)
- move.w #UpR1,(a2)
- CHAIN_NEXT
-
- J_11111010: *右1/右1/中1/中1/
- lea 4096+4(a2),a2
- move.w #UpL1,-3072-2(a2)
- move.w #UpL1,-2048+0(a2)
- move.w d5,-1024+0(a2)
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_11111011: *右1/右1/中1/右1/
- lea 4096+6(a2),a2
- subq.w #2,d5
- move.w d5,-3072-4(a2)
- move.w d5,-2048-2(a2)
- move.w d5,(a2)
- addq.w #2,d5
- move.w d5,-1024-2(a2)
- CHAIN_NEXT
-
- J_11111100: *右1/右1/右1/00/
- lea 3072+6(a2),a2
- subq.w #2,d5
- move.w d5,-2048-4(a2)
- move.w d5,-1024-2(a2)
- move.w d5,(a2)
- addq.w #2,d5
- CHAIN00X
-
- J_11111101: *右1/右1/右1/左1/
- lea 4096+4(a2),a2
- subq.w #2,d5
- move.w d5,-3072-2(a2)
- move.w d5,-2048+0(a2)
- move.w d5,-1024+2(a2)
- addq.w #2,d5
- move.w #UpR1,(a2)
- CHAIN_NEXT
-
- J_11111110: *右1/右1/右1/中1/
- lea 4096+6(a2),a2
- subq.w #2,d5
- move.w d5,-3072-4(a2)
- move.w d5,-2048-2(a2)
- move.w d5,-1024+0(a2)
- addq.w #2,d5
- move.w d5,(a2)
- CHAIN_NEXT
-
- J_11111111: *右1/右1/右1/右1/
- lea 4096+8(a2),a2
- subq.w #2,d5
- move.w d5,-3072-6(a2)
- move.w d5,-2048-4(a2)
- move.w d5,-1024-2(a2)
- move.w d5,(a2)
- addq.w #2,d5
- CHAIN_NEXT